Skip to main content

Unified Access Log Format

IO River provides the ability to get CDN access logs in a unified format. When you configure streaming of logs to a logs destinations, the logs will be sent in a gzip files. The gzip files will contain a json arrays with multiple elements, each element represents a single HTTP request to the CDN.

Log Fields

Field NameTypeDescription
unified_logs_behavior_idStringLogging behavior Id
service_uidStringService UID (used in CNAME)
service_idStringID of the Service (GUID)
timestampStringRequest timestamp
client_ipStringEnd-user IP address
client_asnStringEnd-user AS number (ASNUM)
client_asn_nameStringName of the AS number
geo_locationStringEnd-user country code
geo_location_cityStringEnd-user city name
domainStringRequest domain
pathStringRequest path
http_versionStringRequest HTTP version
methodStringRequest method
query_paramsStringRequest query string
cookieStringRequest Cookie header
refererStringRequest referer
x_forwarded_forStringRequest X-Forwarded-For header
user_agentStringRequest user agent
status_codeIntegerHTTP status code of the response
status_phraseStringPhrase associated with the status code
content_typeStringResponse Content-Type header
content_encodingStringResponse Content-Encoding header
response_bytesIntegerSize of the response
providerStringCDN provider which handled this request
detailed_result_typeStringProvider specific information about the response
server_ipStringIP address of the edge server
is_cachedStringIndicates whether the request was served from cache
midgress_bytesIntegerResponse midgress bytes
origin_bytesIntegerResponse origin bytes
time_takenIntegerTTLB (ms) - Time from when the CDN receives a request until it sends the last byte of the response
turnaround_timeIntegerTTFB (ms) - Time from when the CDN receives a request until it sends the first byte of the response

Log Line Example

{"service_uid":"PHQG1UL0WE","service_id":"04997d9e-7bb5-4140-af5e-6240b6bbbd9e","provider":"Fastly","timestamp":"2025-04-02T09:00:00.229Z","response_bytes":554,"status_code":200,"path":"/api/test/logs","query_params":"foo=1","domain":"test.ioriver.io","referer":"https://www.example.com","geo_location":"ES","geo_location_city":"madrid","http_version":"HTTP/1.1","user_agent":"curl/8.1.2","client_ip":"93.172.248.221","is_cached":"true","method":"GET","midgress_bytes":0,"origin_bytes":0,"x_forwarded_for":"1.2.3.4","time_taken":144,"status_phrase":"","cookie":"","server_ip":"199.232.211.52","client_asn":"6813","content_encoding":"gzip","client_asn_name":"Telefonica de Espana","detailed_result_type":"","content_type":"application/json","turnaround_time":56}

Log Delivery Timeline

IO River sends the access log as files with multiple lines (i.e. requests). This happens when the file has 80,000 lines or every 3 minutes, whichever happens first.

Log Filename

If you are using S3 as the log destination, you can expect files to be stored there with the following filename format. For example:

2025-04-02T08:59:08Z-2025-04-02T09:00:12Z-e4e3fc56-0fa0-11f0-af87-6e51fb8cf854.gz